<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
  <title>Description of v_rotqr2mr</title>
  <meta name="keywords" content="v_rotqr2mr">
  <meta name="description" content="V_ROTQR2MR converts a matrix of real quaternion vectors to quaternion matrices">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
  <meta name="robots" content="index, follow">
  <link type="text/css" rel="stylesheet" href="../m2html.css">
</head>
<body>
<a name="_top"></a>
<div><a href="../index.html">Home</a> &gt;  <a href="index.html">v_mfiles</a> &gt; v_rotqr2mr.m</div>

<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
<td align="right"><a href="index.html">Index for v_mfiles&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->

<h1>v_rotqr2mr
</h1>

<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>V_ROTQR2MR converts a matrix of real quaternion vectors to quaternion matrices</strong></div>

<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>function mr=v_rotqr2mr(qr) </strong></div>

<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre class="comment">V_ROTQR2MR converts a matrix of real quaternion vectors to quaternion matrices
 Inputs:

     QR(4m,n,...)   mxn matrix of real quaternion vectors (each 4x1)

 Outputs:

     MR(4m,4n,...)   mxn matrix of real quaternion matrices (each 4x4)

 In matrix form, quaternions can be multiplied and added using normal matrix
 arithmetic. Each element of an mxn matrix of quaternions is itself a 4x4 block
 so the total dimension of MR is 4m x 4n.</pre></div>

<!-- crossreference -->
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
This function calls:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="v_rotqr2ro.html" class="code" title="function r=v_rotqr2ro(q)">v_rotqr2ro</a>	ROTQR2RO converts a real quaternion to a 3x3 rotation matrix</li></ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="v_qrmult.html" class="code" title="function q=v_qrmult(q1,q2)">v_qrmult</a>	V_QRMULT multiplies together two real quaternions matrices q=[q1,q2]</li></ul>
<!-- crossreference -->


<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function mr=v_rotqr2mr(qr)</a>
0002 <span class="comment">%V_ROTQR2MR converts a matrix of real quaternion vectors to quaternion matrices</span>
0003 <span class="comment">% Inputs:</span>
0004 <span class="comment">%</span>
0005 <span class="comment">%     QR(4m,n,...)   mxn matrix of real quaternion vectors (each 4x1)</span>
0006 <span class="comment">%</span>
0007 <span class="comment">% Outputs:</span>
0008 <span class="comment">%</span>
0009 <span class="comment">%     MR(4m,4n,...)   mxn matrix of real quaternion matrices (each 4x4)</span>
0010 <span class="comment">%</span>
0011 <span class="comment">% In matrix form, quaternions can be multiplied and added using normal matrix</span>
0012 <span class="comment">% arithmetic. Each element of an mxn matrix of quaternions is itself a 4x4 block</span>
0013 <span class="comment">% so the total dimension of MR is 4m x 4n.</span>
0014 
0015 <span class="comment">%</span>
0016 <span class="comment">%      Copyright (C) Mike Brookes 2000-2018</span>
0017 <span class="comment">%      Version: $Id: v_rotqr2mr.m 10865 2018-09-21 17:22:45Z dmb $</span>
0018 <span class="comment">%</span>
0019 <span class="comment">%   VOICEBOX is a MATLAB toolbox for speech processing.</span>
0020 <span class="comment">%   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html</span>
0021 <span class="comment">%</span>
0022 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0023 <span class="comment">%   This program is free software; you can redistribute it and/or modify</span>
0024 <span class="comment">%   it under the terms of the GNU General Public License as published by</span>
0025 <span class="comment">%   the Free Software Foundation; either version 2 of the License, or</span>
0026 <span class="comment">%   (at your option) any later version.</span>
0027 <span class="comment">%</span>
0028 <span class="comment">%   This program is distributed in the hope that it will be useful,</span>
0029 <span class="comment">%   but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
0030 <span class="comment">%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
0031 <span class="comment">%   GNU General Public License for more details.</span>
0032 <span class="comment">%</span>
0033 <span class="comment">%   You can obtain a copy of the GNU General Public License from</span>
0034 <span class="comment">%   http://www.gnu.org/copyleft/gpl.html or by writing to</span>
0035 <span class="comment">%   Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.</span>
0036 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0037 <span class="keyword">persistent</span> a b c
0038 <span class="keyword">if</span> isempty(a)
0039     a=[1 2 3 3 1 2];    <span class="comment">% destination row of +ve entries (from 0)</span>
0040     b=[1 2 3 2 3 1];    <span class="comment">% destination col of +ve entries (from 0)</span>
0041     c=[0 0 0 1 2 3];    <span class="comment">% source row of +ve entries (from 0)</span>
0042 <span class="keyword">end</span>
0043 s=size(qr);
0044 m=s(1);
0045 mr=repmat(reshape(qr,s(1),[]),4,1);
0046 n=size(mr,2);
0047 mn=s(1)*n;
0048 j=repmat(4*m*(0:n-1),m/4,1);
0049 i=repmat((1:4:m)',n,1)+j(:);
0050 ni=length(i);
0051 i6=repmat(i,1,6);
0052 mr(i6+repmat(a+m*b,ni,1))=mr(i6+repmat(c,ni,1));
0053 mr(i6+repmat(c+m*b,ni,1))=-mr(i6+repmat(a,ni,1));
0054 s(2)=4*s(2); <span class="comment">% output array size</span>
0055 mr=reshape(mr,s);
0056 <span class="keyword">if</span> ~nargout
0057     qr=qr(1:4);
0058     <a href="v_rotqr2ro.html" class="code" title="function r=v_rotqr2ro(q)">v_rotqr2ro</a>(qr(:)); <span class="comment">% plot a rotated cube</span>
0059 <span class="keyword">end</span></pre></div>
<hr><address>Generated by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
</body>
</html>